#ifndef MSGQUEUE_H_
#define MSGQUEUE_H_
#ifndef I_MAX
#define I_MAX 10
#endif
#include <stdio.h>
#include <semaphore.h>
/*
描述：
	传值为指针，但是真实存在的package，不用担心引用危险指针
	使用弹出时，要求是一个package变量，此会修改pack的内容并不返回指针
*/
sem_t bin_sem;

struct Package{
  int type;
  int sock;
  int destination;
  char msg[50];
  char other[50];
};

struct Msgqueue{
    struct Package age[I_MAX+1];
	unsigned int head;
	unsigned int tail;
};
void init_msg(struct Msgqueue *msg);

int full_msg(struct Msgqueue *msg);

int empty_msg(struct Msgqueue *msg);

void add_pkg(struct Msgqueue * msg,const struct Package *pack);

void ret_pkg(struct Msgqueue *msg,struct Package *pack);

void ret_dele_pkg(struct Msgqueue *msg,struct Package *pack);

#endif
